package store.lunangangster.engine;

/**
 * 每一个即将被执行的Command并不是单独执行的，其可以引起一系列的操作。每一个新的Command被创建和执行时，
 * 都会有一个新的Agenda对象被创建，用于记录在此Command中引起的操作。所有被记录的操作都将在该Agenda中被执行，从而
 * 便于系统进行监控和日志打印。所以可以看到有很多可以直接进行的操作，然而还是使用的<code>new Command</code>，
 * 并且交给CommandExecutor执行。
 *
 * <p>该类由AgendaFactory创建
 *
 *
 * @author cwk
 * @version 1.0
 */
public interface Agenda {

  boolean hasNext();

  Runnable getNextOperation();

  void addOperation(Runnable operation);

  void addOperation(Runnable operation, boolean printNativeLog);
}
